/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.uniceub.fsw.testes.facade;

import br.uniceub.fsw.arquitetura.persistencia.transacao.Transacao;
import br.uniceub.fsw.testes.dao.TipoTesteDAO;
import br.uniceub.fsw.testes.vo.TipoTesteVO;
import br.uniceub.fsw.util.Html;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Abrahao
 */
public class TipoTesteFacade {

    public String operacao(HttpServletRequest req) {

        String oper = req.getParameter("operacao");

        if (oper == null || oper.equals("")) {
            return "";
        }
        if (oper.equals("Consultar")) {
            listarTipoTeste();
            return "Consultar";
        }
        if (oper.equals("Incluir")) {
            incluirTipo(req);
            return "alert('Registro Incluido com Sucesso.')";
        }
        if (oper.equals("Alterar")) {
            alterarTipo(req);
            return "alert ('Registro Alterado com Sucesso.')";
        }
        if (oper.equals("Excluir")) {
            excluirTipo(req);
            return "alert('Registro Excluido com sucesso.')";
        }
        return "";
    }
    TipoTesteDAO tipoDAO = new TipoTesteDAO();
    Html montarHtml = new Html();

    /**
     * Gera uma lista com todos os tipos de teste cadastrados
     * @return
     */
    public String listarTipoTeste() {
        StringBuffer sb = new StringBuffer();
        List<TipoTesteVO> listaTipo = new ArrayList();
        TipoTesteVO tipoVO = new TipoTesteVO();
        listaTipo = tipoDAO.consultarPorExemplo(tipoVO);
        String[] titulos = {"&nbsp;", "Nome", "Descrição"};
        String[] atributos = {"noTipoTeste", "dsTipoTeste"};
        sb.append(montarHtml.criarTabelaRadio(listaTipo, atributos, titulos, "idTipoTeste"));

        return sb.toString();

    }

    /**
     * Exclui do banco de dados o tipo de teste selecionado
     * @param req
     */
    public void excluirTipo(HttpServletRequest req) {
        TipoTesteVO tipoVO = new TipoTesteVO();
        int id = Integer.parseInt(req.getParameter("idTipoTeste"));
        tipoVO = tipoDAO.consultarPorId(id);
        try {
            Transacao.iniciar();
            tipoDAO.excluir(tipoVO);
            Transacao.efetivar();
        } catch (Exception ex) {
            System.out.println(ex);
            Transacao.desfazer();
        }

    }

    /**
     * Inclui no banco de dados o tipo de teste especificado
     * @param req
     */
    public void incluirTipo(HttpServletRequest req) {
        TipoTesteVO tipoVO = new TipoTesteVO();
        tipoVO.setNoTipoTeste(req.getParameter("noTipoTeste"));
        tipoVO.setDsTipoTeste(req.getParameter("dsTipoTeste"));
        try {
            Transacao.iniciar();
            tipoDAO.inserir(tipoVO);
            Transacao.efetivar();
        } catch (Exception ex) {
            System.out.println(ex);
            Transacao.desfazer();
        }

    }

    /**
     * Monta o código HTML da página de inclução de tipo de teste
     * @return
     */
    public String montarIncluirTipo() {
        StringBuffer sb = new StringBuffer();
        sb.append("<TABLE>\n");
        sb.append("<TR>\n");
        sb.append("<TD>Nome do Tipo:</TD>");
        sb.append("<TD>" + montarHtml.criarInput("noTipoTeste", "") + "</TD>");
        sb.append("</TR>");
        sb.append("<TR>");
        sb.append("<TD>Descrição do Tipo</TD>");
        sb.append("<TD>" + montarHtml.criarInput("dsTipoTeste", "") + "</TD>");
        sb.append("</TR>");
        sb.append("</TABLE>");
        return sb.toString();
    }

    /**
     * Monta o código HTML da página de alteração de tipo de teste
     * @param req
     * @return
     */
    public String montarAlterarTipo(HttpServletRequest req) {
        StringBuffer sb = new StringBuffer();
        TipoTesteVO tipoVO = new TipoTesteVO();
        tipoVO = tipoDAO.consultarPorId(new Integer(req.getParameter("idTipoTeste")));
        sb.append("<TABLE>\n");
        sb.append("<input type='hidden' name='idTipoTeste' value='" + tipoVO.getIdTipoTeste() + "'>");
        sb.append("<TR>\n");
        sb.append("<TD>Nome do Tipo:</TD>");
        sb.append("<TD>" + montarHtml.criarInput("noTipoTeste", tipoVO.getNoTipoTeste()) + "</TD>");
        sb.append("</TR>");
        sb.append("<TR>");
        sb.append("<TD>Descrição do Tipo</TD>");
        sb.append("<TD>" + montarHtml.criarInput("dsTipoTeste", tipoVO.getDsTipoTeste()) + "</TD>");
        sb.append("</TR>");
        sb.append("</TABLE>");
        return sb.toString();
    }

    /**
     * Salva no banco de dados as alterações feitas no tipo de teste
     * @param req
     */
    public void alterarTipo(HttpServletRequest req) {
        TipoTesteVO tipoVO = new TipoTesteVO();
        tipoVO = tipoDAO.consultarPorId(Integer.parseInt(req.getParameter("idTipoTeste")));
        tipoVO.setDsTipoTeste(req.getParameter("dsTipoTeste"));
        tipoVO.setNoTipoTeste(req.getParameter("noTipoTeste"));
        try {
            Transacao.iniciar();
            tipoDAO.alterar(tipoVO);
            Transacao.efetivar();
        } catch (Exception ex) {
            System.out.println(ex);
            Transacao.desfazer();
        }


    }
}
